Skip to content

fix: MATCH ... CREATE ... RETURN creates once per row (GQLITE-T-0488) - #200

Merged
dylanbstorey merged 1 commit into
mainfrom
fix/t0488-create-per-row
Nov 2, 2026
Merged

dylanbstorey merged 1 commit into
mainfrom
fix/t0488-create-per-row

Conversation

@dylanbstorey

Copy link
Copy Markdown
Contributor

Summary

  • MATCH (a) CREATE (a)-[:T]->(:New) RETURN a created one node, not one per row, and the RETURN rows included the new node. MATCH (a:Missing) CREATE (:New) RETURN count(*) created a node. Also in v0.12.0.
  • Cause: the MATCH+CREATE+RETURN handler's fallback ran MATCH+CREATE, then the MATCH again for the RETURN. The fallback now runs in the row pipeline (GQLITE-T-0488).
  • known.json: the GQLITE-T-0488 entry is removed.

Test plan

  • tests/functional/106_create_per_row_return.sql
  • Unit 1030/1030; functional; TCK 3880/3880 on SQLite 3.53 and 3.54.1; Python 1669 passed.
  • Metamorphic: cover reps 2 and random seeds 1, 50001, 90001 (20000 each): 0 new signatures; no write_return mismatch left.

Semantic coverage matrix

  • tests/functional/106 covers CREATE per row with RETURN, an aggregate RETURN, and a MATCH with no rows.

Checklist

  • Tests added
  • No version bump

When the RETURN read no variable that only the CREATE bound, the
MATCH+CREATE+RETURN handler ran MATCH+CREATE, then the MATCH again for
the RETURN: a CREATE that bound no matched variable ran once (or for a
MATCH with no rows), and the RETURN saw the new nodes. That fallback
now runs in the row pipeline.
@dylanbstorey
dylanbstorey merged commit cfca885 into main Nov 2, 2026
17 checks passed
@dylanbstorey
dylanbstorey deleted the fix/t0488-create-per-row branch November 2, 2026 02:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant